package com.asen.libcommon.base

import androidx.fragment.app.Fragment
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import io.reactivex.disposables.CompositeDisposable

/**
 * @date   : 2021/2/23
 * @author : asenLiang
 * @e-mail : liangAisiSen@163.com
 * @desc   : aac模式封装
 */
abstract class BaseFragment : Fragment() {
    /** 视图是否加载完毕 */
    protected var isViewPrepare: Boolean = false
    /** 数据是否加载过了 */
    protected var hasLoadData: Boolean = false
    /** rxJava 綁定 使用addDispose方法加入创建的rxJava,在销毁的时候统一处理防止内存泄漏*/
    internal var compositeDisposable: CompositeDisposable? = null

    /**
     * fragment中，快速实现MutableLiveData观察方法
     * 默认使用的生命周期所有者为viewLifecycleOwner
     */
    protected fun <T> MutableLiveData<T>.extObserver(
        owner: LifecycleOwner = viewLifecycleOwner,
        callback: (T) -> Unit
    ) {
        this.observe(owner, Observer { callback.invoke(it) })
    }
}
